docker常用命令& 3种docker日志查看

您所在的位置:网站首页 nginx grep日志条数 docker常用命令& 3种docker日志查看

docker常用命令& 3种docker日志查看

2023-11-07 09:09| 来源: 网络整理| 查看: 265

一、概念

理念:容器化,把应用打包

定义:docker是一个开源的应用容器引擎,可以把任何应用以及他们的依赖包打包到一个 轻量级、可移植的容器中,然后发布到流行的Linux机器上,实现虚拟化。

VM和docker区别:

​ VM结构:server-》host OS -》hypervisor -> Guest OS -> Bins/libs ->app

​ docker : server-》host OS -》-> docker engine ->bins/libs ->app

从以上结构可以看出,hostOS直接安装一个docker engine,就可以从远程仓库【Registry】只中下载对应软件的docker镜像【images】,然后docker镜像运行起来就是一个容器【Containers】,这个容器像一个正常的操作系统一样,可以读写文件 并且运行起来的docker镜像,在删除和迁移的时候,也非常方便。

二、docker架构图

在这里插入图片描述

hostOS在安装完docker之后,会启动一个docker守护进程【docker daemon】,这个守护进程相当于docker命令行的解释器【类似于shell】,用户只要在hostOS的shell中执行docker对应的命令,就可以完成相应的操作。

三、docker命令

现在假设你已经安装好docker了。

1、验证是否安装成功

$ docker info

2、docker需要有自己的守护进程才能运行自己的命令,如果你没有的话,可以这样启动

用systemctl 或者service启动

$ sudo systemctl start docker $ sudo service docker start

3、列出本机所有的docker images

$ docker images

4、下载并运行自己的镜像,假设我们现在下载一个hello-world

$ docker image pull hello-world #下载 $ docker run -d -p 8080:80 hello-world #运行 -p 端口映射 -d守护进程 $ docker run -it ubuntu /bin/bash # -i 交互模式 -t 终端 使用Ubuntu镜像启动一个容器

5、查看在运行的container

$ docker ps

6、运行失败,要删除原来的container,重新运行

$docker rm hello-world $docker rmi [imagesName] #刪除鏡像文件 $docker container kill [containerID] #手動停止容器

可以先在 Docker官方仓库 docker hub中搜索一下想要用的images https://hub.docker.com ,获取他对应的文件名称路径,然后在用 pull 下载

7、把host主机中的文件和容器相互拷贝

$docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 $docker cp 宿主机的相应路径 容器名:要拷贝的文件在容器里面的路径

8、服务运行之后,产生的文件需要保存下来,但是直接停止container,一般来说是不会在容器中保存产生的文件的。这时候需要先commit,把文件保存下来,生成新的镜像

$docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 -a 提交镜像作者 -m 提交时说明文字 a404c6c174a2 原imagesID 四、查看docker日志

注意:docker有关的命令都要有管理员权限,可以把用户添加到管理员组,或者每次都接sudo

1、直接进入该容器,找到对应日志

$ sudo docker exec -it a95cee23942d /bin/bash #在镜像a95cee23942d中执行/bin/bash root@a95cee23942d:/# ls bin boot dev etc home lib lib64 logs media mnt opt proc requirements.txt root run sbin srv sys tmp usr var #进入该container之后,就直接找到 /var/logs查看了

docker logs是根据containers而创建的

2、在主机中 ,实时查看docker容器日志

$sudo docker logs -f -t --tail 行数 容器名[containerID] -f 按日志输出 -t 显示时间戳

3、在主机中 ,docker容器的日志目录

1、查看容器详细信息 $docker inspect 7a20f9671dbd 2、通过详细信息找到LogPath,那么它就在主机的目录结构下面 "LogPath": "/var/lib/docker/containers/7a20f9671dbd972d1e94355c15b74236e36a9eb72da4636cb7e996e1a9cdd40c/7a20f9671dbd972d1e94355c15b74236e36a9eb72da4636cb7e996e1a9cdd40c-json.log" 3、用less 或者cat查看日志 $ sudo less /var/lib/docker/containers/7a20f9671dbd972d1e94355c15b74236e36a9eb72da4636cb7e996e1a9cdd40c/7a20f9671dbd972d1e94355c15b74236e36a9eb72da4636cb7e996e1a9cdd40c-json.log 五、定制镜像,并推送到 Registry --> dockerfile

定义: Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

1、dockerfile 语法 在这里插入图片描述

from base镜像 maintainer 作者 run 执行命令 copy 把文件拷贝到镜像中 add 添加文件 expose 暴露端口号 copy能拷贝命令和 文件夹,add可以添加远程的文件,比如ftp上的 entrypoint 容器入口 workdir 指定路径 env 设定环境变量 user 指定用户

2、docker存储 :镜像分层

dockerfile中每一行都产生一个新层 在这里插入图片描述

已经存在的镜像:只读

运行起来,就是可读可写的层

分层技术,在有层共享的时候,存储压力会小很多

3、dockerfile 创建一个 images

$docker build -t hello:tag . # hello:tag 容器名:标签; . 是上下文,把该路径里面的所有东西打包成hello【images】

4、推送到远程registry,公共【Docker hub】或私人【需要另外购买】

首先得先注册,然后在登录,最后推送

$docker login # 输入用户名和密码即可 $docker push hello/ubuntu:v2.4 #添加tag是为了在镜像分层上传时候,只要上传新增加的就可以了,如果想上传全部镜像层,不添加tag即可



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3